package com.bjtang.book.util;

import com.bjtang.book.dto.MetaDto;
import com.bjtang.book.dto.ReturnDto;

/**
 * 返回值工具类
 **/
public class ReturnUtil {
	/**
	 * 带data的正确返回 或者错误返回
	 **/
	public static ReturnDto successOrError(boolean save, Object data) {
		if (save)
			return success(data);
		else
			return error();
	}

	/**
	 * 不带data的正确返回 或者错误返回
	 **/
	public static ReturnDto successOrError(boolean save) {
		if (save)
			return success();
		else
			return error();
	}

	/**
	 * 带data的正确返回
	 **/
	public static ReturnDto success(Object data) {
		if (data == null)
			return error(404, "没有可供返回的数据");
		ReturnDto returnDto = new ReturnDto();
		MetaDto metaDto = new MetaDto();
		metaDto.setStatus(200);
		metaDto.setMsg("操作成功");
		returnDto.setMeta(metaDto);
		returnDto.setData(data);
		return returnDto;
	}

	/**
	 * 不带data的正确返回
	 **/
	public static ReturnDto success() {
		ReturnDto returnDto = new ReturnDto();
		MetaDto metaDto = new MetaDto();
		metaDto.setStatus(200);
		metaDto.setMsg("操作成功");
		returnDto.setMeta(metaDto);
		return returnDto;
	}

	/**
	 * 带data的错误返回
	 **/
	public static ReturnDto error(Object data, Integer code, String msg) {
		ReturnDto returnDto = new ReturnDto();
		MetaDto metaDto = new MetaDto();
		metaDto.setStatus(code);
		metaDto.setMsg(msg);
		returnDto.setMeta(metaDto);
		returnDto.setData(data);
		return returnDto;
	}

	/**
	 * 不带data的错误返回
	 **/
	public static ReturnDto error(Integer code, String msg) {
		ReturnDto returnDto = new ReturnDto();
		MetaDto metaDto = new MetaDto();
		metaDto.setStatus(code);
		metaDto.setMsg(msg);
		returnDto.setMeta(metaDto);
		return returnDto;
	}

	/**
	 * 不带data的默认错误返回
	 **/
	public static ReturnDto error() {
		ReturnDto returnDto = new ReturnDto();
		MetaDto metaDto = new MetaDto();
		metaDto.setStatus(403);
		metaDto.setMsg("操作失败");
		returnDto.setMeta(metaDto);
		return returnDto;
	}

}